import { 
  Controller, 
  Get, Query, 
  Post, Body, Headers, HttpCode,
  Header // 设置请求头
} from '@nestjs/common'
import { User } from 'src/entities/User.entity';
import { UserService } from './user.service';

/* 控制器 负责 请求响应 */
@Controller('user')
export class UserController {
  constructor(
    private readonly userService: UserService
  ) {}
  /**
   * get 请求保存数据
   * @param query get获取？后面的值使用 @Query()
   * @returns 返回数据给前端
   */
  @Get('/saveUser')
  save(@Query() query: any){
    console.log('save User  query===', query)
    const user = new User()
    user.name = query.name
    user.age = Number(query.age)
    if( query.id ) {
      user.id = Number(query.id)
    }
    console.log("new user --->", user)
    return this.userService.save( user )
  }

  // 查询全部用户数据
  @Get("/getUser")
  Get(@Query() query: any){
    console.log('get User ===', query)

    return this.userService.getAll( query )
  }

  /**
   * post 请求测试
   * @param testBody post中数据放置在Body中，使用@Body()来获取
   * @param testHeaders 请求头数据
   * @returns 
   */
  // 添加用户数据，测试用例
  @Post('/postTest')
  // 默认情况下 post 的请求状态码是 201 
  // 使用 @HttpCode() 装饰器 修改
  @HttpCode(200)
  test(@Body() testBody, @Headers() testHeaders){
    console.log('post test Body ===', testBody)
    console.log('post test Headers ===', testHeaders)


    return {msg: '成功', data: testBody}
  }


  /**
   * 获取用户权限
   * @param testBody post中数据放置在Body中，使用@Body()来获取
   * @param testHeaders 请求头数据
   * @returns 
   */
  // 添加用户数据，测试用例
  @Post('/getPermission')
  // @Header('Content-type','application/x-www-form-urlencoded')
  @HttpCode(200)
  permission (@Body() testBody, @Headers() testHeaders){
    // console.log('testBody', testBody, testHeaders)
    
    return {code: 0, msg: '成功', data: testBody}
  }
}

